const oracledb = require('oracledb')

const xlsx = require('node-xlsx');
var fs = require('fs');

var moment = require('moment');

const DB_CONFIG = {
  user: 'cgxzcuser', 
  password: 'Tp3D1rBz#cx2024',
  connectString: '172.50.100.181:1521/cgxzc' // 数据库地址：{IP:PORT/数据库名称}
}
oracledb.initOracleClient({libDir: "C:\\Users\\15371\\scoop\\apps\\oracle-instant-client\\current"});
//新老产销对比的列
const 新老产销对比列JOIN = [
       'ORDER_NO',     'ORDER_NO_OLD', 'ORDER_ITEM_NUM',
  '客户合同号',   '合同类型描述', '销售组织',
  '销售区域',     '创建人',       '跟单人',
  '首次受票人',   '客户名称',     '结算单位名称',
  '制造商',       '计价方式',     '币种',
  '付款方式',     '品名描述',     '标准类别描述',
  '钢级名称',     '标准名称',     '订货品名描述',
  '订货标准名称', '订货钢级名称', '外径',
  '壁厚',         '扣型描述',     '产品规格描述',
  '订货规格描述', '交货量',       '订货计量单位',
  '长度下限',     '长度上限',     '长度单位',
  '保总长',       '短尺率',       '短尺最短',
  '短尺随炉',     '平均长度大于', '平均长度小于',
  '交货量差下限', '交货量差上限', '单倍尺长',
  '交货结束日期', '收货单位名称', '出厂方式',
  '代办标识',     '最终用户',     '质保书单位',
  '出库计量',     '外购坯',       '外购管',
  '监制要求',     '在线机探盲区', '在线机探盲区切长',
  '是否协同',     '订货附加要求', '特殊要求技术规范',
  '保价类型',     '运费',         '出厂价',
  '吊装费',       '结算价'
]

const 新产销对比列JOINLEFT = [
  'ID',                   'ORDER_NO',              'ORDER_NO_OLD',
  'ORDER_ITEM_NUM',       'CONTRACT_NO_CUST',      'TRADE_TYPE',
  'CUSTOMER_NO',          'STLMT_UNIT_NO',         'PROD_TYPE_NO',
  'ORDER_CLASSIFY',       'ORDER_MODE',            'ORDER_TYPE',
  'SALE_INS',             'SALE_ORG',              'SALESMAN',
  'DOCUMENTARY_NAME',     'SIGN_DATE',             'BUSINESS_TYPE',
  'SIGN_ADDRESS',         'COMPANY_ID',            'CUSTOMER_NM',
  'STLMT_UNIT_NM',        'PRODUCE_PLACE',         'SUPPLY_UNIT',
  'FREIGHT_MODE',         'INVOICE_TYPE',          'BILL_DATE',
  'BANK',                 'ACCOUNT',               'TAX_ID',
  'PRICE_FL',             'CURRENCY',              'MNY_ASK_TYP',
  'PRICE_PLAN',           'LOCAL_LAW',             "''",
  'ORDER_REQUIRE_STATUS', 'PORT_OF_DESTINATION',   'ORDER_SEQ',
  'ORDER_SEQ_OLD',        'DELIVERY_NO_OLD',       'ORDER_STATUS',
  'MONTH',                'GROUP_ORDER_NO',        'PROD_SPEC_CODE',
  'PROD_SPEC',            'APN_CODE',              'APN_DEF',
  'PROD_NAME',            'QLY_GRADE_NO',          'TRADE_NO',
  'PROD_STD',             'PIPE_TYPE',             'MANU_METHOD',
  'DELIVERY_STATUS_NAME', 'SALE_PROD_CODE_NAME',   'SALE_SG_STD_NM',
  'SALE_SHOP_SIGN_NAME',  'SALE_GOOD_STATUS_NAME', 'OUT_DIA',
  'WAL_THK',              'MODEL_NAME',            'SPEC_CODE_NAME',
  'ORDER_SPEC_CODE_NAME', 'WGT',                   'UNIT',
  'LEN_MIN',              'LEN_MAX',               'LEN_UNIT',
  'ORD_ENSU_TOTL_LEN',    'SHRT_LEN_RATO',         'SHORTEST',
  'SHRT_STOVE',           'AVG_LEN_MIN',           'AVG_LEN_MAX',
  'DELVRY_RANGE_MIN',     'DELVRY_RANGE_MAX',      'SIGL_LEN',
  'DELVRY_EDATE',         'CONSIGNEE_COM',         'TRANS_TYPE',
  'TRANS_MODE',           'STATION_NAME',          'SPCL_LN_NM',
  'MEMO',                 'FINAL_USER_NM',         'FINAL_USER',
  'QUALITY_USER',         'OUTBOUND_CALCULATE',    'OUTS_BILLET_FL',
  'OUTS_PIPE',            'MONITOR_FLAG',          'MAN_INSPECTION',
  'PROJECT_NO',           'COOPERATE_FLAG',        'EXTRA_REQUIRE_OLD',
  'PRO_TEC_REQUIRE_OLD',  'KEEP_TYPE',             'FREIGHT',
  'OUT_PRICE',            'PAK_PRICE',             'BALNCE_PRICE'
]

const 新产销对比列注释别名JOINLEFT =[
  'ID',           '合同号',       '老产销订单',   'ORDER_ITEM_NUM',
  '客户合同号',   '贸易类型',     'CUSTOMER_NO',  'STLMT_UNIT_NO',
  'PROD_TYPE_NO', '分类',         '合同类型',     '分类--订货方式',
  '销售组织',     '片区',         '业务员',       '跟单人',
  '签订日期',     '业务分类',     '签订地点',     '卖出单位',
  '订货单位',     '结算单位',     '产地区分',     '制造商',
  '运费开票方式', '发票类型',     'BILL_DATE',    '开户行',
  '开户行账号',   '税号',         '定价方式',     '币种',
  '付款方式',     '优惠方案',     '当地法律法规', '其他信息',
  '订单要求',     '目的港',       '合同行',       '老产销合同行',
  '老产销交货行', '状态',         '排产月份',     '集团订单号',
  '规范码',       '产品规范描述', '用途码代码',   '用途码描述',
  '规范品名',     '质量等级',     '规范钢级',     '规范标准',
  '管端类型',     '制造方式',     '规范交货状态', '订货品名',
  '订货标准',     '订货钢级',     '订货交货状态', '外径',
  '壁厚',         '扣型',         '产品规格',     '订货规格',
  '订货量',       '订货单位_1',   '长度下限',     '长度上限',
  '长度单位',     '保总长',       '短尺率',       '短尺最短',
  '短尺随炉',     '平均长度大于', '平均长度小于', '交货量差下限',
  '交货量差上限', '单倍长度',     '交货期',       '收货单位',
  '运输方式',     '运输模式',     '到站',         '专用线',
  '备注',         '最终用户',     'FINAL_USER',   '质保书单位',
  '出库计量',     '外购坯',       '外购管',       '是否监制',
  '在线机探盲区', '订单工程编号', '是否协同',     '合同附加要求',
  '产品技术要求', '保价类型',     '运费',         '出厂价',
   "吊装费","结算价"
]


const 老产销对比列JOINRIGHT =  [
  '合同号',        '合同行号',     '交货行号',     '客户合同号',
  '合同类型描述',  '客户名称',     'CUSTOMER_NO',  '币种',
  '计价方式',      '付款方式',     '制造商',       '结算单位名称',
  'STLMT_UNIT_NO', '首次受票人',   '付款要求描述', '销售组织',
  '销售区域',      '合同状态',     '生效人',       '创建人',
  '修改人',        '跟单人',       '是否含税',     '合同分类',
  '打印价格',      '优惠方案',     '合同归档',     '品种分类',
  '产品规范描述',  '冶金规范描述', '用途码描述',   '品名描述',
  '标准名称',      '钢级名称',     '标准类别描述', '订货规格描述',
  '产品规格描述',  '外径',         '壁厚',         '扣型描述',
  '长度描述',      '长度单位',     '下限',         '上限',
  '短尺率',        '短尺最短',     '长尺率',       '长尺最长',
  '短尺随炉',      '平均长度大于', '平均长度小于', '成品公差',
  '单倍尺长',      '订货计量单位', '订货量',       '订货保总长',
  '生产吨数',      '交货量差方式', '交货量差下限', '交货量差上限',
  '最终用户',      'FINAL_USER',   '外购坯',       '外购管',
  'ASSEL',         '监制要求',     '监制说明',     'MPS要求',
  'MPS编号',       'MPS说明',      '订货附加要求', '特殊要求技术规范',
  '订货价',        '运费',         '测算价',       '出厂价',
  '结算价',        '吊装费',       '吨价',         '保价类型',
  '合同行状态',    '结算价状态',   '在线机探盲区', '在线机探盲区切长',
  '质保书单位',    'WBS号',        '出库计量',     '是否协同',
  '运输方式',      '管端自动测量', '攻关项目',     '输出标准号',
  '交货结束日期',  '交货量',       '重量估算',     '保总长',
  '收货单位名称',  '交货地点',     '代办标识',     '指定地址',
  '出厂方式'   ,   '运输方案' ,    '自提标志'
]

         var buffer = xlsx.build([
                 {name:'新老产销对比列JOIN',data:[新老产销对比列JOIN]},
                 {name:'新产销对比列JOINLEFT',data:[新产销对比列JOINLEFT]},
                 {name:'新产销对比列注释别名JOINLEFT',data:[新产销对比列注释别名JOINLEFT]},
                 {name:'老产销对比列JOINRIGHT',data:[老产销对比列JOINRIGHT]},

            ]);
             fs.writeFileSync(`./统计.xlsx`,buffer,{'flag':'w'});


//新产销非case when 的列转为js数组



//老产销非case when 的列转为js数组



